package coder.common;

/**
 * BaseContext类用于在跨线程的情况下传递上下文信息
 * 它主要通过ThreadLocal来存储每个线程独有的信息，这样可以避免信息的交叉污染
 * 该类提供了设置当前线程上下文ID和获取当前线程上下文ID的方法
 */
public class BaseContext {
    // 使用ThreadLocal存储Long类型的对象，每个线程都会有自己独立的副本
    private static ThreadLocal<String> threadLocal = new ThreadLocal<>();

    /**
     * 设置当前线程的上下文ID
     * 这个方法允许在当前线程中存储一个Long类型的ID信息，以便在后续的处理中使用
     *
     * @param id 要设置的当前线程上下文ID
     */
    public static void setCurrentId(String id) {
        threadLocal.set(id);
    }

    /**
     * 获取当前线程的上下文ID
     * 这个方法返回之前通过setCurrentId方法设置的ID，如果没有设置，则返回null
     * 它用于在需要的地方获取当前线程上下文的ID信息
     *
     * @return 当前线程的上下文ID，如果未设置，则返回null
     */
    public static String getCurrentId() {
        return threadLocal.get();
    }
}

